package com.noble.glamour.module.utils;

import android.content.Context;
import android.content.Intent;

import com.noble.glamour.application.App;
import com.noble.glamour.module.config.FinalKey;
import com.noble.glamour.ui.MainActivity;

import java.util.Map;

/**
 * 应用内页面跳转工具
 */
public class UIShow {

    // ---------------------------应用内弹出及跳转------------------------------

    public static void show(Context context, Intent intent) {
        context.startActivity(intent);
    }

    public static void show(Context context, Class clz, int flag) {
        Intent intent = new Intent(context, clz);
        if (flag != -1)
            intent.addFlags(flag);
        show(context, intent);
    }

    public static void show(Context context, Class clz) {
        show(context, clz, -1);
    }

    /**
     * 显示activity并清空栈里其他activity
     *
     * @param activity 要启动的activity
     */
    public static void showActivityClearTask(Context context, Class activity) {
        show(context, activity, Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    }

    /**
     * 调用改方法启动activity，可将应用从后台唤起到前台，
     */
    public static void showActivityFromBack(Class activity) {
        show(App.context, activity, Intent.FLAG_ACTIVITY_NEW_TASK);
    }

    /**
     * 跳转到主页并清除栈里的其他页面
     */
    public static void showMainClearTask(Context context) {
        showActivityClearTask(context, MainActivity.class);
    }

    /**
     * 跳转到首页的指定tab，并传值，通过MainActivity的OnNewIntent接收
     *
     * @param tabType 指定的跳转tab
     * @param dataMap 跳转时通过intent传递的map值
     */
    public static void showMainWithTabData(Context context, int tabType, Map<String, String> dataMap) {
        Intent intent = new Intent(context, MainActivity.class);
        intent.putExtra(FinalKey.HOME_TAB_TYPE, tabType);
        if (dataMap != null)
            for (Map.Entry<String, String> entry : dataMap.entrySet()) {
                intent.putExtra(entry.getKey(), entry.getValue());
            }
        context.startActivity(intent);
    }

    /**
     * 应用外消息提示点击跳转到信箱fragment
     *
     * @param context 上下文
     */
    public static void showMainWithBackMessage(Context context) {
        Intent mainIntent = new Intent(Intent.ACTION_MAIN);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mainIntent.setClass(context, MainActivity.class);
        mainIntent.putExtra(FinalKey.HOME_TAB_TYPE, FinalKey.MAIN_TAB_2);//消息列表
        context.startActivity(mainIntent);
    }
}
